package com.campus.help.util;

import com.campus.help.entity.Task;
import com.campus.help.enums.TaskStatus;

import java.time.LocalDateTime;
import java.util.Collection;
import java.util.UUID;

public class TaskUtil {
    
    /**
     * 生成任务ID
     * @return 任务ID
     */
    public static String generateTaskId() {
        return UUID.randomUUID().toString().replace("-", "");
    }
    
    /**
     * 验证截止时间是否有效
     * @param deadline 截止时间
     * @return 是否有效
     */
    public static boolean isValidDeadline(LocalDateTime deadline) {
        return deadline != null && deadline.isAfter(LocalDateTime.now());
    }
    
    /**
     * 检测用户是否有冲突的任务（已接受但未完成的任务，最多允许2个）
     * @param tasks 所有任务
     * @param studentId 学号
     * @return 是否有冲突（true=已达上限）
     */
    public static boolean hasConflictTask(Collection<Task> tasks, String studentId) {
        long count = tasks.stream()
                .filter(task -> studentId.equals(task.getAcceptorId())
                        && TaskStatus.ACCEPTED.name().equals(task.getStatus()))
                .count();
        return count >= 2;
    }
    
    /**
     * 检查任务是否可以被接受
     * @param task 任务
     * @return 是否可以接受
     */
    public static boolean canAcceptTask(Task task) {
        return task != null 
               && TaskStatus.PENDING.name().equals(task.getStatus()) 
               && isValidDeadline(task.getDeadline());
    }
}